// window 事件发送工具
export const windowDispatch = (eventName, data) => {
  // console.log('windowDispatch', eventName, data)
  window.dispatchEvent(new CustomEvent(eventName, {detail: data}))
}

/**
 * 向 window 发送自定义事件
 * @param eventName 事件名称
 * @param data 数据
 */
export const windowDispatchEvent = (eventName, data) => {
  return new Promise((resolve, reject) => {
    windowDispatch(eventName, {
      cbSuccess: (res) => { // 成功回调
        resolve(res)
      },
      cbError: (err) => { // 失败回调
        reject(err)
      },
      ...data
    })
  })
}

/**
 * 监听 window 事件
 * @param eventName 事件名称
 * @param cb 回调函数
 */
export const windowOnEvent = (eventName, cb) => {
  window.addEventListener(eventName, (event) => {
    cb(event.detail)
  })
}

/**
 * 取消监听 window 事件
 * @param eventName 事件名称
 * @param fn 监听的函数
 */
export const windowOffEvent = (eventName, fn) => {
  window.removeEventListener(eventName, fn)
}

